VBLocker : Protgez votre application commerciale

Version 1.0 du 8/5/2002

Supposons que vous soyez le responsable des ventes de la socit Bigrosoft.com, vous voulez protger votre nouveau logiciel BigSoft v1.0 contre la copie illgale :

1. Vous mettez votre logiciel BigSoft v1.0 sur le Web, il est prsent comme une version d'valuation ;

2. Les internautes tlchargent votre logiciel et l'installent sur leur PC sous Windows ;

3. Le logiciel fonctionne mais le message d'information "Version d'valuation" s'affiche partout, le client se dcide donc  acqurir une licence pour BigSoft v1.0 : pour cela, il clique sur un bouton qui va dclancher la procdure d'activation (dbridage) du logiciel : le nom du client et les options souhaites sont demands au client, puis la procdure crypte ces infos en les combinant avec le numro de srie (de la partition) du disque dur du client. Enfin, la procdure envoie un mail contenant ces infos cryptes  ventes@bigrosoft.com ;

4. Le responsable (vous !) reoit ce mail, et si le paiement correspondant  la licence avec les options souhaites est bien reue galement, il lance la procdure d'activation (ActivationBigSoft.exe) du cot du vendeur cette fois : celle-ci  pour but de dbrider uniquement le logiciel install sur le disque dur du client qui vient de payer. La procdure cot vendeur gnre un mail avec ce code de dbridage spcifique et crypt galement, et ce mail est retourn au client ;

5. Le client rceptionne ce mail et saisie dans le logiciel la cl fournie : le logiciel est dbrid :-)


Remarques :
---------
- Du cot du client, l'enregistrement de la dll ActiveX dans la base de registre (regsvr32.exe vblocker.dll) est assur par le logiciel BigSoft lui-mme (cet enregistrement serait normalement assur par un paquage d'installation, ainsi que la dsinstallation complte du logiciel). Du cot du vendeur (vous), pour que la dmo fonctionne directement, l'enregitrement de VBUnLocker.Dll aussi est assur par ActivationBigSoft.exe, mais ce dernier devra de toute faon tre recompiler selon vos besoins.

- Que se passe-t-il si votre client formate son disque dur tous les matins ? il faudra lui rpondre que s'il veut utiliser BigSoft v1.0, il va falloir qu'il se calme un peu car vous avez fermement l'intention de lui faire payer chaque cl d'activation (a devrait le calmer un peu).

- Vous pouvez modifier le codage des informations dans la cl et il est prfrable de refaire la fonction de cryptage de la cl (il n'est pas raisonnable de se fier  un cryptage  cl ou algo. symtrique lorsque celui-ci est publique, alors que cela n'est pas gnant pour un cryptage  cls asymtriques). La difficult est de convertir les cls cryptes sur un codage facilement lisible, mais ce problme n'est pas insurmontable (cf. code). De toutes faons, les algorithmes de cryptage sont les exercices de programmation favoris des dveloppeurs :-) Note : si vous trouvez un algo. de cryptage symtrique  toute preuve mme aprs une publication de son code, mailez-moi S.V.P.

- Penser  compiler en code natif (Edition VB Professionnelle) car le P-Code se dsassemble trs bien... ( partir d'un .exe en P-Code, un hacker peut rcuprer votre code source sauf les noms des variables) cela concerne votre logiciel ainsi que VBLocker.Dll, mais pas VBUnlocker.Dll et le logiciel d'activation qui ne sont pas distribus aux clients.
Sachez que cette protection ne rsisterait pas longtemps  un pirate confirm, mais rsistera  95% de vos clients qui prfrerons payer la licence que de perdre du temps  cracker votre logiciel (tout dpend du prix que vous fixez pour votre logiciel). Le seul vrai risque est qu'un pirate distribue une version cracke de votre logiciel... a vous apprendra  receler galement ce genre de logiciel ! mais d'ici l, vous serez dj riche (pensez  un ptit cadeau pour moi :-) et vous trouverez alors une autre solution de protection de votre logiciel, payante cette fois.
Ide pour renforcer la scurit : vrifier l'intgrit de VBLocker.Dll par un checksum, mais rien n'empchera un pirate de shunter aussi ce contrle d'intgrit ; sinon, la solution pourrait tre un service Web ddi au contrle d'accs (mme risque que prcdemment) ou mieux : mettre tout le logiciel en mode locatif sur le Web uniquement (ASP) : le code, mme compil, ne sera pas accessible au pirate.
En attendant, la meilleure solution pour le contrle d'intgrit de votre logiciel semble tre la signature numrique pour les contrles ActiveX : consultez les articles suivants dans MSDN (MicroSoft Developer Network) : 
Introduction to Code Signing
Digital Signing for ActiveX Components
Signing and Marking ActiveX Controls
Signing Code with Microsoft Authenticode Technology 
CryptoAPI Tools with Authenticode
Remarque : La signature de code et les fonctions de hachage sont peut tre plus simples  utiliser avec VB.Net (ventuellement en conservant VBLocker.Dll en VB6).

- il doit y avoir le signe " au dbut du fichier contrat.txt pour que le contrat s'affiche correctement dans la zone de liste (je ne sais pas pourquoi !)

- Il y a d'autres remarques dans le code source.

Par Patrice Dargenton (je ne suis pas parti de zro pour cette contribution)
patrice.dargenton@free.fr
http://perso.worldonline.fr/ors/index.html
